package com.ywyself.service;

import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import com.ywyself.dao.ArticleDao;
import com.ywyself.ext.kit.YsKit;
import com.ywyself.ext.utils.YsDateUtils;
import com.ywyself.model.Article;

public class ArticleService {
    public static final ArticleService EXC = new ArticleService();

    private final ArticleDao articleDao = new ArticleDao();

    /**
     * 添加文章
     * 
     * @param article
     *            文章
     * @return true|数据插入成功
     */
    public YsKit save(Article article) {
        return articleDao.save(article);
    }

    /**
     * 删除文章
     * 
     * @param id
     *            文章的id
     * @return true|删除成功
     */
    public YsKit delete(long id) {
        return articleDao.delete(id);
    }

    /**
     * 更新文章
     * 
     * @param article
     *            新的文章内容
     * @return true|更新成功
     */
    public YsKit update(Article article) {
        return articleDao.update(article);
    }

    /**
     * 置顶/取消置顶文章
     * 
     * @param id
     *            文章的id
     * @param isTop
     *            是否置顶
     * @return
     */
    public YsKit updateIsTop(long id, int isTop) {
        return articleDao.updateIsTop(id, isTop);
    }

    /**
     * 修改文章的摘要
     * 
     * @param id
     *            文章的id
     * @param summary
     *            摘要
     * @return
     */
    public YsKit updateSummary(long id, String summary) {
        return articleDao.updateSummary(id, summary);
    }

    /**
     * 更新文章的seo信息
     * 
     * @param id
     *            文章的id
     * @param keywords
     *            关键字
     * @param description
     *            关键字描述
     * @return
     */
    public YsKit updateSEO(long id, String keywords, String description) {
        return articleDao.updateSEO(id, keywords, description);
    }

    /**
     * 根据id查找文章
     * 
     * @param id
     *            文章id
     * @return 文章模型Article
     */
    public Article get(long id) {
        return articleDao.get(id);
    }

    /**
     * 所有的文章
     * 
     * @param pageNumber
     * @param pageSize
     * @return
     */
    public Page<Record> page(int pageNumber, int pageSize) {
        return articleDao.page(pageNumber, pageSize);
    }

    /**
     * 最近一周的文章
     * 
     * @param pageNumber
     * @param pageSize
     * @return
     */
    public Page<Record> pageRecent(int pageNumber, int pageSize) {
        return articleDao.page(pageNumber, pageSize, YsDateUtils.getDayBefore(7) + " 00:00:00",
                YsDateUtils.getDayAfter(1) + " 00:00:00");
    }

    /**
     * 统计最近一周的文章数量
     * 
     * @return
     */
    public long countRecent() {
        return articleDao.count(YsDateUtils.getDayBefore(7) + " 00:00:00");
    }

    /**
     * 查询置顶文章
     * 
     * @param pageNumber
     * @param pageSize
     * @param isTop
     *            是否置顶
     * @return
     */
    public Page<Record> pageTop(int pageNumber, int pageSize, boolean isTop) {
        return articleDao.page(pageNumber, pageSize, isTop);
    }

    /**
     * 计数，置顶的文章数
     * 
     * @param isTop
     *            是否置顶
     * @return
     */
    public long count(boolean isTop) {
        return articleDao.count(isTop);
    }
}
